package model;

import java.rmi.RemoteException;
import java.util.ArrayList;
import java.util.List;

import controller.AdministradorProducto;
import controller.Sistema;
import dto.AreaDTO;
import dto.IngredienteDTO;
import exceptions.ProductoException;

public class Area {
	private int id;
	private String nombre;
	private List<Plato> platos;
	private Deposito deposito;
	private int cantHoras;
	private List<ItemComanda> tareas;
	
	public Area(){
		this.platos=new ArrayList<Plato>();
		this.tareas=new ArrayList<ItemComanda>();
	}
	
	public String getNombre() {
		return nombre;
	}
	public void setNombre(String nombre) {
		this.nombre = nombre;
	}
	public List<Plato> getPlatos() {
		return platos;
	}
	public void setPlatos(List<Plato> platos) {
		this.platos = platos;
	}
	public Deposito getDeposito() {
		return deposito;
	}
	public void setDeposito(Deposito deposito) {
		this.deposito = deposito;
	}
	public int getCantHoras() {
		return cantHoras;
	}
	public void setCantHoras(int cantHoras) {
		this.cantHoras = cantHoras;
	}
	public List<ItemComanda> getTareas() {
		return tareas;
	}
	public void setTareas(List<ItemComanda> tareas) {
		this.tareas = tareas;
	}

	public int getId() {
		return id;
	}

	public void setId(int id) {
		this.id = id;
	}

	public void addPlato(Plato alt) {
		this.platos.add(alt);
		
	}

	

	private void ajustarInventario(Plato plato, int cantidad) throws RemoteException, ProductoException {
		for (ItemReceta item : plato.getReceta().getItemsReceta()) {
			Ingrediente ingrediente=item.getIngrediente();
			IngredienteDTO productoDTO=new IngredienteDTO();
			productoDTO=(IngredienteDTO) AdministradorProducto.getInstancia().fromModelTODTO(ingrediente);
			float cantidadIngrediente=item.getCantidad()*cantidad;
			AreaDTO areaDTO=new AreaDTO();
			areaDTO.setId(this.getId());
			
			Sistema.getInstancia().ajustarInventario(areaDTO, productoDTO, -(cantidadIngrediente), "Despacho plato", "Salon");
		}
		
	}

	
	public void prepararPlato(Plato p, int cantidad) throws RemoteException, ProductoException {
		this.ajustarInventario(p, cantidad);
		
	}

	public void addTarea(ItemComanda itc) {
		this.tareas.add(itc);
		
	}
}
